package com.lans.graph;

import com.lans.linear.Queue;

import java.util.LinkedList;

/**
 * @author: lans
 * @date: 2025/3/8
 * @name: 刘宇
 * 使用邻接链表实现无向图
 */
public class Graph {

    //顶点数量
    private int V;

    //边的数量
    private int E;

    //邻接表
    private Queue<Integer>[] adj;

    public Graph(int V) {
        this.V = V;
        this.E = 0;
        this.adj = new Queue[V];
        for(int i = 0;i<adj.length;i++){
            adj[i] = new Queue<Integer>();
        }
    }

    //获取顶点数量
    public int V(){
        return this.V;
    }

    //获取边的数量
    public int E(){
        return this.E;
    }

    //添加边
    public void addEdge(int v,int w){
        adj[v].enqueue(w);
        adj[w].enqueue(v);
        E++;
    }

    //返回V顶点链接的所有的顶点链表
    public Queue<Integer>adj(int v){
        return adj[v];
    }
}